package com.situ.service;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

import com.situ.domain.Car;
import com.situ.domain.Record;
import com.situ.domain.SpotEnum;

public class RecordArrayList implements Serializable{
	/** serialVersionUID*/  
    private static final long serialVersionUID = 1265165161L;
    ArrayList<Record> recordArrayList = new ArrayList<Record>();
	
	/**
	 * <p>Title: listRecords</p>  
	 * <p>Description: 获取所有停车记录</p>  
	 * @author 恩策
	 * @date 2021年7月26日
	 * @return
	 */
	public ArrayList<Record> listRecords(){
		return recordArrayList;
	}
	
	/**
	 * <p>Title: insertRecord</p>  
	 * <p>Description: 新增停车记录(进入停车场)</p>  
	 * @author 恩策
	 * @date 2021年7月26日
	 * @param record
	 * @return
	 */
	public boolean insertRecord(Record record) {
	    return recordArrayList.add(record);
	}
	
	/**
	 * <p>Title: findRecord</p>  
	 * <p>Description: 通过车牌号和停车位号取车</p>  
	 * @author 恩策
	 * @date 2021年7月26日
	 * @param lisence
	 * @return 0取车成功/1没有该停车位/2车牌号与停车位不匹配
	 */
    public int outCar(String lisence, int n) {
        // 只有1-10的停车位
        if (n > 10 || n < 1) {
            return 1;
        }
        for (Record record : recordArrayList) {
            // 判断取车信息停车场中的车牌号和停车位置
            // 停车位从0 到 10 , 0号停车位为默认值，其实际不存在
            if (record.getCar().getLisence().equals(lisence) && SpotEnum.values()[n] == record.getSpotEnum()) {
                record.setEndTime(new Date());
                // 以秒做小时，换算费用
                BigDecimal temp = new BigDecimal(
                        (record.getEndTime().getTime() - record.getStartTime().getTime()) / 1000 * 2);
                record.setCost(temp);
                return 0;
            }
            
        }
        return 2;
    }
	
	// 初始化
    public RecordArrayList() {
        super();
        recordArrayList.add(
                new Record(new Car("鲁B-K1P25", 2.59), SpotEnum.FIFTH, new Date(), new Date(), new BigDecimal(3.6)));
        // 改变停车位状态
        SpotEnum.FIFTH.setState();
        recordArrayList.add(
                new Record(new Car("鲁B-LO025", 2.79), SpotEnum.TENTH, new Date(), new Date(), new BigDecimal(3.6)));
        SpotEnum.TENTH.setState();
        recordArrayList.add(
                new Record(new Car("鲁B-CF152", 3.09), SpotEnum.SECOND, new Date(), new Date(), new BigDecimal(3.6)));
        SpotEnum.SECOND.setState();
    }

}
